package com.tes.entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

import com.tes.VO.RequerimientoVO;

@Entity
public class Proyecto implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int idProyecto;
	private String nombre;
	private String descripcion;
	private Date fecha;
	
	@ManyToMany (cascade = CascadeType.ALL)
	@JoinTable(name = "Proyecto_Persona", joinColumns = { @JoinColumn(name = "idProyecto") }, inverseJoinColumns = { @JoinColumn(name = "idPersona") })
	private List<Persona> personas = new ArrayList<Persona>();
	
	@OneToOne
	private Metodo metodo;
	
	@OneToMany (cascade=CascadeType.ALL)
	@JoinColumn(name="idProyecto")
	private List<Requerimiento> requerimientos = new ArrayList<Requerimiento>();
	
	@OneToMany (cascade=CascadeType.ALL)
	@JoinColumn(name="idProyecto")
	private List<Priorizacion> priorizaciones = new ArrayList<Priorizacion>();
	
	private String estado;
	
	public int getIdProyecto() {
		return idProyecto;
	}
	public void setIdProyecto(int idProyecto) {
		this.idProyecto = idProyecto;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getDescripcion() {
		return descripcion;
	}
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	public Date getFecha() {
		return fecha;
	}
	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}
	public List<Persona> getPersona() {
		return personas;
	}
	public void setPersona(List<Persona> persona) {
		this.personas = persona;
	}
	public Metodo getMetodo() {
		return metodo;
	}
	public void setMetodo(Metodo metodo) {
		this.metodo = metodo;
	}
	public List<Requerimiento> getRequerimientos() {
		return requerimientos;
	}
	public void setRequerimientos(List<Requerimiento> requerimientos) {
		this.requerimientos = requerimientos;
	}
	public List<Priorizacion> getPriorizaciones() {
		return priorizaciones;
	}
	public void setPriorizaciones(List<Priorizacion> priorizaciones) {
		this.priorizaciones = priorizaciones;
	}
	public String getEstado() {
		return estado;
	}
	public void setEstado(String estado) {
		this.estado = estado;
	}
	public List<RequerimientoVO> getRequerimientosVO(){
		List<RequerimientoVO> result = new ArrayList<RequerimientoVO>();
		for(int i=0;i<this.requerimientos.size();i++){
			Requerimiento re= requerimientos.get(i);
			RequerimientoVO reqVO=new RequerimientoVO();
			reqVO.setNombre(re.getNombre());
			reqVO.setDescripcion(re.getDescripcion());
			reqVO.setIdRequerimiento(re.getIdRequerimiento());
			reqVO.setNroRequerimiento(re.getNroRequerimiento());

			result.add(reqVO);
		}
		return result;
	}
	public Proyecto(){
		
	}
	public Proyecto(Date fecha, String nombre,String estado, String descripcion, Metodo metodo, Persona idGerenteDesarrollo,Persona idGerenteNegocio){
		this.fecha = fecha;
		this.nombre = nombre;
		this.descripcion = descripcion;
		this.metodo = metodo;
		this.getPersona().add(idGerenteDesarrollo);
		this.getPersona().add(idGerenteNegocio);
		this.estado = estado;
	}

}
